N3191: C++ Timeout Specification git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@119909 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/__mutex_base b/include/__mutex_base index 554ec3f..d3b2a1b 100644 --- a/include/__mutex_base +++ b/include/__mutex_base 
@@ -382,11 +382,11 @@  const chrono::duration<_Rep, _Period>& __d)  {  using namespace chrono; - system_clock::time_point __s_now = system_clock::now(); - monotonic_clock::time_point __c_now = monotonic_clock::now(); + system_clock::time_point __s_now = system_clock::now(); + steady_clock::time_point __c_now = steady_clock::now();  __do_timed_wait(__lk, __s_now + __ceil<nanoseconds>(__d)); - return monotonic_clock::now() - __c_now < __d ? cv_status::no_timeout : - cv_status::timeout; + return steady_clock::now() - __c_now < __d ? cv_status::no_timeout : + cv_status::timeout;  }    template <class _Rep, class _Period, class _Predicate> @@ -396,7 +396,7 @@  const chrono::duration<_Rep, _Period>& __d,  _Predicate __pred)  { - return wait_until(__lk, chrono::monotonic_clock::now() + __d, + return wait_until(__lk, chrono::steady_clock::now() + __d,  _STD::move(__pred));  }   
diff --git a/include/chrono b/include/chrono index d41b88f..97b0c81 100644 --- a/include/chrono +++ b/include/chrono 
@@ -223,26 +223,26 @@  typedef duration::rep rep;  typedef duration::period period;  typedef chrono::time_point<system_clock> time_point; - static const bool is_monotonic = false; + static const bool is_steady = false;    static time_point now();  static time_t to_time_t (const time_point& __t);  static time_point from_time_t(time_t __t);  };   -class monotonic_clock +class steady_clock  {  public:  typedef nanoseconds duration;  typedef duration::rep rep;  typedef duration::period period; - typedef chrono::time_point<monotonic_clock, duration> time_point; - static const bool is_monotonic = true; + typedef chrono::time_point<steady_clock, duration> time_point; + static const bool is_steady = true;    static time_point now();  };   -typedef monotonic_clock high_resolution_clock; +typedef steady_clock high_resolution_clock;    } // chrono   @@ -843,26 +843,26 @@  typedef duration::rep rep;  typedef duration::period period;  typedef chrono::time_point<system_clock> time_point; - static const bool is_monotonic = false; + static const bool is_steady = false;    static time_point now();  static time_t to_time_t (const time_point& __t);  static time_point from_time_t(time_t __t);  };   -class _LIBCPP_VISIBLE monotonic_clock +class _LIBCPP_VISIBLE steady_clock  {  public:  typedef nanoseconds duration;  typedef duration::rep rep;  typedef duration::period period; - typedef chrono::time_point<monotonic_clock, duration> time_point; - static const bool is_monotonic = true; + typedef chrono::time_point<steady_clock, duration> time_point; + static const bool is_steady = true;    static time_point now();  };   -typedef monotonic_clock high_resolution_clock; +typedef steady_clock high_resolution_clock;    } // chrono   
diff --git a/include/condition_variable b/include/condition_variable index 682fb45..124d388 100644 --- a/include/condition_variable +++ b/include/condition_variable 
@@ -232,7 +232,7 @@  condition_variable_any::wait_for(_Lock& __lock,  const chrono::duration<_Rep, _Period>& __d)  { - return wait_until(__lock, chrono::monotonic_clock::now() + __d); + return wait_until(__lock, chrono::steady_clock::now() + __d);  }    template <class _Lock, class _Rep, class _Period, class _Predicate> @@ -242,7 +242,7 @@  const chrono::duration<_Rep, _Period>& __d,  _Predicate __pred)  { - return wait_until(__lock, chrono::monotonic_clock::now() + __d, + return wait_until(__lock, chrono::steady_clock::now() + __d,  _STD::move(__pred));  }   
diff --git a/include/future b/include/future index 55b0ead..be975f4 100644 --- a/include/future +++ b/include/future 
@@ -603,7 +603,7 @@  future_status  __assoc_sub_state::wait_for(const chrono::duration<_Rep, _Period>& __rel_time) const  { - return wait_until(chrono::monotonic_clock::now() + __rel_time); + return wait_until(chrono::steady_clock::now() + __rel_time);  }    template <class _R> 
diff --git a/include/mutex b/include/mutex index 45ce669..c87d0fd 100644 --- a/include/mutex +++ b/include/mutex 
@@ -221,7 +221,7 @@  template <class _Rep, class _Period>  _LIBCPP_INLINE_VISIBILITY  bool try_lock_for(const chrono::duration<_Rep, _Period>& __d) - {return try_lock_until(chrono::monotonic_clock::now() + __d);} + {return try_lock_until(chrono::steady_clock::now() + __d);}  template <class _Clock, class _Duration>  bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);  void unlock(); @@ -264,7 +264,7 @@  template <class _Rep, class _Period>  _LIBCPP_INLINE_VISIBILITY  bool try_lock_for(const chrono::duration<_Rep, _Period>& __d) - {return try_lock_until(chrono::monotonic_clock::now() + __d);} + {return try_lock_until(chrono::steady_clock::now() + __d);}  template <class _Clock, class _Duration>  bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __t);  void unlock(); 
diff --git a/include/thread b/include/thread index fe671b2..abb56f4 100644 --- a/include/thread +++ b/include/thread 
@@ -406,10 +406,10 @@  template <class _Duration>  inline _LIBCPP_INLINE_VISIBILITY  void -sleep_until(const chrono::time_point<chrono::monotonic_clock, _Duration>& __t) +sleep_until(const chrono::time_point<chrono::steady_clock, _Duration>& __t)  {  using namespace chrono; - sleep_for(__t - monotonic_clock::now()); + sleep_for(__t - steady_clock::now());  }    inline _LIBCPP_INLINE_VISIBILITY